scheduler: Update vcpu_schedule_lock to check for changed lock pointer as well
Credit2 has different cpus share a lock; which means that as cpus are
added, and as they're moved between pools, the pointer to the
scheduler lock may also change as well.
Since we don't want to have to grab a lock before grabbing the per-cpu
scheduler lock, we use the lock itself to protect against the pointer
changing.
However, since it may change between reading and locking, after we
grab the lock we need to check to make sure it's still the right one.
Update the vcpu_schedule_lock() definition to reflect this: both
v->processor and that processor's schedule lock are liable to change;
check both after grabbing the lock, and release / re-acquire if
necessary.
Signed-off-by: George Dunlap <george.dunlap@eu.citrix.com>